#ifndef MINI_ENGINE_APPLICATION
#define MINI_ENGINE_APPLICATION
#include "GLFW/glfw3.h"
#include <glm/glm.hpp>
#include <iostream>
using namespace std;
#include "WindowSurface.h"
#include "InitWindow.h"
#include "PhysicalDevice.h"
#include "LogicalDevice.h"
#include "SwapChain.h"
#include "QueueFamilies.h"
#include "ImageViews.h"
#include "GraphicsPipeline.h"
#include "RenderPass.h"
#include "Framebuffers.h"
#include "Command.h"
#include "SyncObjects.h"
#include "DrawFrame.h"
#include "Model.h"

namespace mini_engine
{

    struct SimplePushConstantData
    {
        glm::vec2 offset;
        alignas(16) glm::vec3 color;
    };
    
    class Application
    {
    private:
        void initWindow();
        void initVulkan();
        void mainLoop();
        void cleanUp();

    public:
        Application(/* args */);
        void run();
        ~Application();
    };
}

#endif